package com.five.calendar.utils;

/**
 * @function 动画相关的工具
 * @date 16-9-18 15:14
 */
public class AnimUtils {

    /**
     * ValueAnimator的根据执行的float获取相对应的颜色
     * @param fraction 动画执行0f到1f的进度
     * @param startValue 初始色值
     * @param endValue 结束色值
     * @return 每一帧动画的色值
     */
    public static Object evaluate(float fraction, Object startValue, Object endValue) {
        int startInt = (Integer) startValue;
        int startA = (startInt >> 24) & 0xff;
        int startR = (startInt >> 16) & 0xff;
        int startG = (startInt >> 8) & 0xff;
        int startB = startInt & 0xff;

        int endInt = (Integer) endValue;
        int endA = (endInt >> 24) & 0xff;
        int endR = (endInt >> 16) & 0xff;
        int endG = (endInt >> 8) & 0xff;
        int endB = endInt & 0xff;

        return (int) ((startA + (int) (fraction * (endA - startA))) << 24) |
                (int) ((startR + (int) (fraction * (endR - startR))) << 16) |
                (int) ((startG + (int) (fraction * (endG - startG))) << 8) |
                (int) ((startB + (int) (fraction * (endB - startB))));
    }
}
